#ifndef RK3588_ENGINE_H
#define RK3588_ENGINE_H

#include "types/error.h"
#include "types/datatype.h"

#include <vector>
#include <memory>

class NNEngine
{
public:
    virtual ~NNEngine() {}; // 析构函数
    virtual nn_error_e LoadModelFile(const char *model_file) = 0; // 加载模型文件，=0表示纯虚函数，必须在子类中实现
    virtual const std::vector<tensor_attr_s> &GetInputShapes() = 0;  // 获取输入张量的形状
    virtual const std::vector<tensor_attr_s> &GetOutputShapes() = 0;  // 获取输出张量的形状
    virtual nn_error_e Run(std::vector<tensor_data_s> &inputs, std::vector<tensor_data_s> &outputs, bool want_float) = 0;  // 运行模型
};

std::shared_ptr<NNEngine> CreateRKNNEngine(); // 创建RKNN引擎

#endif